package com.uniflow.util;

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

/**
 * 密码工具类
 * 用于生成和验证密码哈希值
 */
public class PasswordUtil {

    private static final PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();

    /**
     * 生成密码哈希值
     *
     * @param rawPassword 原始密码
     * @return BCrypt加密后的密码哈希值
     */
    public static String encodePassword(String rawPassword) {
        return passwordEncoder.encode(rawPassword);
    }

    /**
     * 验证密码
     *
     * @param rawPassword     原始密码
     * @param encodedPassword 加密后的密码
     * @return 是否匹配
     */
    public static boolean matches(String rawPassword, String encodedPassword) {
        return passwordEncoder.matches(rawPassword, encodedPassword);
    }

    /**
     * 生成123456的BCrypt哈希值
     * 用于初始化测试用户密码
     */
    public static void main(String[] args) {
        String password = "123456";
        String encodedPassword = encodePassword(password);

        System.out.println("原始密码: " + password);
        System.out.println("BCrypt哈希值: " + encodedPassword);
        System.out.println("验证结果: " + matches(password, encodedPassword));

        // 生成多个哈希值供选择（每次运行BCrypt都会生成不同的哈希值）
        System.out.println("\n可用的123456密码哈希值:");
        for (int i = 1; i <= 3; i++) {
            System.out.println(i + ". " + encodePassword(password));
        }
    }
}